package com.hourse.platform.service;

import com.hourse.platform.entity.*;
import com.hourse.platform.exception.AppException;
import com.hourse.platform.vo.*;

import java.util.List;

/**
 * @使用描述: FlowService
 */
public interface FlowService extends PublicService{

  /**
   * @功能描述: 【获取流程列表】
   */
  List<FlowVO> flowList();

  /**
   * @功能描述: 【流程节点列表】
   */
  List<FlowNodeVO> nodeList(String flowId);

  /**
   * @功能描述: 【获取流程绑定信息】
   */
  List<FlowBindInfoVO> bindInfoList(String flowId);

  /**
   * @功能描述: 【获取菜单绑定流程】
   */
  List<FlowBindInfoVO> bindInfoListByMenuId(String menuId);

  /**
   * @功能描述: 【获取实例下一处理节点】
   */
  List<FlowNodeEntity> getInstanceNextNode(String flowId, String instanceId);

  /**
   * @功能描述: 【发送流程】
   */
  void sendFlow(FlowProcessVO flowProcessVO) throws AppException;

  /**
   * @功能描述: 【获取当前节点ID】
   */
  String getCurrentNodeId(String flowId, String instanceId);


  /**
   * @功能描述: 【获取开始节点】
   */
  String getFlowFirstNodeId(String flowId);

  /**
   * @功能描述: 【流程操作列表】
   */
  List<FlowProcessEntity> flowOprateList(String instanceId);


  /**
   * @功能描述: 【获取流程参数】
   */
  List<FlowParamsEntity> flowParamsList(String flowId);

  /**
   * @功能描述: 【删除流程属性】
   */
  void deleteFlowParams(String id) throws AppException;

  /**
   * @功能描述: 【获取点参数配置表】
   */
  List<FlowNodeParamsEntity> flowNodeParamsList(String flowId,String nodeId);

  /**
   * @功能描述: 【删除节点属性】
   */
  void deleteFlowNodeParams(String nodeId, String paramsId) throws AppException;

  /**
   * @功能描述: 【获取节点参数】
   */
  List<FlowNodeParamsVO> getNodeParams(String id);

  /**
   * @功能描述: 【删除流程节点】
   */
  void deleteFlowNode(String nodeId) throws AppException;

  /**
   * @功能描述: 【获取绑定子流程列表】
   */
  List<FlowChildrenBindEntity> getBindFlowList(String flowId, String nodeId);

  /**
   * @功能描述: 【流程节点列表】
   */
  List<FlowNodeVO> nodeList(String flowId, String instanceId);
}
